/* c01/ejemplo-07/main.c
 * Programa principal
**/
#include "otro.h"
#include "primitivas.h"
#include <stdio.h>

int main(int argc, char *argv[]){
	SDL_Surface *pantalla = NULL;
	SDL_Event evento;
	Uint32 color_fondo, color1, color2;
	SDL_Rect rect1, rect2;
	int ANCHO = 400, ALTO = 400;
	int corriendo = 1;

	if(SDL_Init(SDL_INIT_VIDEO) < 0){
		printf("Error al iniciar SDL: %s\n", SDL_GetError());	
		exit(1);
	}
	atexit(SDL_Quit);

	pantalla = SDL_SetVideoMode(ANCHO, ALTO, 0, SDL_SWSURFACE|SDL_RESIZABLE);
	if(pantalla == NULL){
		printf("Error al inicializar el modo de video: '%s'\n", SDL_GetError());
		exit(1);
	}

	//Esta es la forma básica de construir un color en SDL:
	color_fondo = SDL_MapRGB(pantalla->format, 0, 0, 0);
	color1 = SDL_MapRGB(pantalla->format, 255, 0, 0);
	color2 = SDL_MapRGB(pantalla->format, 0, 255, 0);

	SDL_WM_SetCaption("Código distribuido", NULL);

	//Hacer primer dibujo
	//Dibujar un rectángulo rojo y otro verde
	rect1.x = 0;
	rect1.y = 0;
	rect1.w = ANCHO/2;
	rect1.h = ALTO/2;
	dibujar_rectangulo(pantalla, rect1, color1);
	rect2.x = ANCHO/2;
	rect2.y = ALTO/2;
	rect2.w = ANCHO/2-1;
	rect2.h = ALTO/2-1;
	dibujar_rectangulo(pantalla, rect2, color2);
	
	//Volcar el buffer en la pantalla
	SDL_Flip(pantalla);
	//Llamar una función que se encuentra en otro archivo de código
	funcionOtro(10, stdout);
	
	while(corriendo) {
		while(SDL_PollEvent(&evento)){
			switch(evento.type){
				case SDL_VIDEORESIZE: {
					ANCHO = evento.resize.w;
					ALTO = evento.resize.h;

					//Redimensionar la pantalla, no hace falta liberar la anterior
					pantalla = SDL_SetVideoMode(ANCHO, ALTO, 0,  SDL_SWSURFACE|SDL_RESIZABLE);
					if(pantalla == NULL){
						printf("Error al redimensionar la pantalla: '%s'\n", SDL_GetError());
						exit(1);
					}
				
					//La pantalla nueva aparece en blanco
					//o mejor dicho, en negro,
					//por lo que hay que dibujar de nuevo:
					rect1.x = 0;
					rect1.y = 0;
					rect1.w = ANCHO/2;
					rect1.h = ALTO/2;
					dibujar_rectangulo(pantalla, rect1, color1);
					rect2.x = ANCHO/2;
					rect2.y = ALTO/2;
					rect2.w = ANCHO/2-1;
					rect2.h = ALTO/2-1;
					dibujar_rectangulo(pantalla, rect2, color2);

					//Vuelca el buffer en la pantalla:
					SDL_Flip(pantalla);
				}
				break;
	
				case SDL_QUIT:
					corriendo = 0;
				break;
			}
		}	
	}
	return 0;
}
